﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Data;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using Sistema.WF.Componentes.WebService;
using System.Collections;
using Sistema.Dominio;
using Sistema.Util;

namespace Sistema.WF.Componentes.UserControls
{
    public partial class R2Endereco : UserControl
    {
        
        private enumTipoLogradouro _tipoLogradouro;
        private enumEstado _estado;
        public R2Endereco()
        {
            InitializeComponent();
            
        }

        #region get's e set's

        public EnderecoVO Endereco
        {
            get { return RecolheDados(); }
            set { CarregaDados(value); }
        }

        private EnderecoVO RecolheDados()
        {
            EnderecoVO retorno = new EnderecoVO();
            retorno.Bairro = TXT_bairro.Text;
            retorno.Cep = MKT_cep.Text;
            retorno.Cidade = TXT_cidade.Text;
            retorno.Complemento = TXT_complemento.Text;
            retorno.Endereco = TXT_endereco.Text;
            retorno.Estado = CMB_uf.Text;//.ToString(ComboHelper.RetornoCombo<enumEstado>(CMB_uf));
            retorno.Logradouro = CMB_logradouro.Text;//Convert.ToString(CMB_logradouro.SelectedValue);
            retorno.Numero = Convert.ToInt32(TXT_numero.Text);
            retorno.Observacao = TXT_observacao.Text;

            return retorno;
        }

        private void CarregaDados(EnderecoVO dados)
        {
            TXT_bairro.Text = dados.Bairro;
            MKT_cep.Text = dados.Cep;
            TXT_cidade.Text = dados.Cidade;
            TXT_complemento.Text = dados.Complemento;
            TXT_endereco.Text = dados.Endereco;
            CMB_uf.Items.Add(dados.Estado);
            CMB_uf.SelectedIndex = 0;
           //CMB_uf.SelectedItem = CMB_uf.FindString(Convert.ToString(dados.Estado));
            CMB_logradouro.Items.Add(dados.Logradouro);
            CMB_logradouro.SelectedIndex = 0;
            TXT_numero.Text = dados.Numero.ToString();
            TXT_observacao.Text = dados.Observacao;
        }
        public void LimparCampos()
        {
            TXT_bairro.Text = "";
            MKT_cep.Text = "";
            TXT_cidade.Text = "";
            TXT_complemento.Text = "";
            TXT_endereco.Text = "";
            CMB_uf.Text = "";
            CMB_logradouro.Text = "";
            TXT_numero.Text = "";
            TXT_observacao.Text = "";
        }

        #endregion

        #region Validações

        private void MKT_cep_Leave(object sender, EventArgs e)
        {
             string cep = MKT_cep.Text;
            
           if (!new Sistema.Dominio.Validador().ValidarCep(cep))
            {
                return;
            }
         Sistema.WF.Componentes.WebService.Endereco pesquisa = new WebService.Endereco();
         pesquisa.PesquisaPorCepCompleted += new PesquisaPorCepCompletedEventHandler(PesquisaPorCepCompleted);
         pesquisa.PesquisaPorCepAsync(Convert.ToInt32(cep.Numeros()), true);
            
        }
        #endregion
        public void PesquisaPorCepCompleted(object sender, Sistema.WF.Componentes.WebService.PesquisaPorCepCompletedEventArgs e)
        {
            try
            {
                             

             if (e == null) { return; }
             if (e.Error != null) { return; }
             if (e.Result.Count() == 0) { return; }

             Sistema.WF.Componentes.WebService.EnderecoInfo eInfo = e.Result[0];
               
                MKT_cep.Text = eInfo.CEP;
                TXT_cidade.Text = eInfo.Cidade.Cidade;
                TXT_endereco.Text = eInfo.Endereco;
                CMB_logradouro.Text = eInfo.Logradouro;
                CMB_uf.Text = eInfo.Estado.Uf;
                TXT_bairro.Text = eInfo.Bairro;
            }
            catch
            { }
        }

        private void R2Endereco_Load(object sender, EventArgs e)
        {
            
            //ComboHelper.CarregaCombo<enumEstado>(CMB_uf);
            CMB_uf.Items.AddRange(Enum.GetNames(typeof(enumEstado)));
            //ComboHelper.CarregaCombo<enumTipoLogradouro>( CMB_logradouro);
            CMB_logradouro.Items.AddRange(Enum.GetNames(typeof(enumTipoLogradouro)));

        }

    }

    }

